package com.lakeworks.service;

import com.lakeworks.domain.status.PostRecord;
import com.lakeworks.domain.status.PostWrap;
import com.lakeworks.domain.status.StatusRecord;

import java.util.List;

/**
 * 包装记录Service接口
 *
 * @author lake
 * @date 2023-02-23
 */
public interface IPostWrapService {

    /**
     * 保存产品操作记录
     */
    void savePostRecord(String table, Long oprProductId, Long userId, String userName);

    /**
     * 保存入厂单、产品、出厂单状态记录
     */
    void saveStatusRecord(String table, String field, Long objId, String status, Long userId, String userName);

    /**
     * 保存入厂单、产品、出厂单状态记录 渠道用
     */
    void saveStatusRecord(String table, String field, Long objId, String status);

    /**
     * 获取产品操作记录
     */
    PostRecord getPostRecord(String table, Long oprProductId);

    /**
     * 获取入厂单、产品、出厂单状态记录
     */
    StatusRecord getStatusRecord(String table, String field, Long objId, String status);


    /**
     * 查询包装记录
     *
     * @param id 包装记录主键
     * @return 包装记录
     */
    PostWrap selectPostWrapById(Long id);

    /**
     * 查询包装记录列表
     *
     * @param postWrap 包装记录
     * @return 包装记录集合
     */
    List<PostWrap> selectPostWrapList(PostWrap postWrap);

    /**
     * 新增包装记录
     *
     * @param postWrap 包装记录
     * @return 结果
     */
    int insertPostWrap(PostWrap postWrap);

    /**
     * 修改包装记录
     *
     * @param postWrap 包装记录
     * @return 结果
     */
    int updatePostWrap(PostWrap postWrap);

    /**
     * 批量删除包装记录
     *
     * @param ids 需要删除的包装记录主键集合
     * @return 结果
     */
    int deletePostWrapByIds(Long[] ids);

    /**
     * 删除包装记录信息
     *
     * @param id 包装记录主键
     * @return 结果
     */
    int deletePostWrapById(Long id);

    void commonStatusRecord(String table, String field, Long objId, String status);

    void commonPostRecord(String table, Long oprProductId);
}
